<?php

#[('Smarty')]
class Smarty
{

    public function assign($arr)
    {
        foreach ($arr as $key => $value) {
            $this->arr[$key] = $value;
        }
    }

    public function display($file)
    {
        # 把文件包含进来
        $str = file_get_contents($file);

        # 正则替换
        $ptn = '/\{\$(.+)\}/i';

        # 替换成
        $rep = '<?php echo $this->arr["$1"] ?>';

        # 开始替换
        $rst = preg_replace($ptn, $rep, $str);

        # 生成替换后的文件名
        $dstfile = "../../runtime/temp/" . md5($file) . ".php";

        # 创建目录
        if (!file_exists('../../runtime')) {
            mkdir("../../runtime");
        }
        if (!file_exists('../../runtime/temp')) {
            mkdir("../../runtime/temp");
        }
        # 创建替换后的文件
        file_put_contents($dstfile, $rst);

        # 包含文件并执行
        include $dstfile;
    }
}
